package com.dys.testarray;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @className: com.dys.testarray.ArrayTest3
 * @description: 数组的添加
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/07/11 下午11:41
 */
public class ArrayTest3 {

    public static void main(String[] args) {
        // addElement5();
        System.out.println(Arrays.toString(getDetails()));
    }

    /**
     * 给定一个数组，在数组下标为2的位置上添加一个元素99
     */
    public static void addElement() {
        // 1.给定一个数组
        int[] arr = {10, 20, 30, 22, 88, 77};
        // 2.输出增加元素前的数组
        System.out.print("增加元素前的数组: ");
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                System.out.print(arr[i] + ",");
            } else {// i == arr.length-1
                System.out.print(arr[i]);
            }
        }

        // 3.增加元素
        arr[5] = arr[4];
        arr[4] = arr[3];
        arr[3] = arr[2];
        arr[2] = 99;

        // 4.输出增加元素后的数组
        System.out.print("\n增加元素后的数组: ");
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                System.out.print(arr[i] + ",");
            } else {// i == arr.length-1
                System.out.print(arr[i]);
            }
        }
    }

    /**
     * 给定一个数组，在数组下标为2的位置上添加一个元素99
     */
    public static void addElement2() {
        // 1.给定一个数组
        int[] arr = {10, 20, 30, 22, 88, 77};
        // 2.输出增加元素前的数组
        System.out.print("增加元素前的数组: ");
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                System.out.print(arr[i] + ",");
            } else {// i == arr.length-1
                System.out.print(arr[i]);
            }
        }

        // 3.增加元素
        for (int i = 5; i >= 3; i--) {
            arr[i] = arr[i - 1];
        }
        arr[2] = 99;

        // 4.输出增加元素后的数组
        System.out.print("\n增加元素后的数组: ");
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                System.out.print(arr[i] + ",");
            } else {// i == arr.length-1
                System.out.print(arr[i]);
            }
        }
    }

    /**
     * 给定一个数组，在数组下标为2的位置上添加一个元素99
     */
    public static void addElement3() {
        // 1.给定一个数组
        int[] arr = {10, 20, 30, 22, 88, 77};
        // 2.输出增加元素前的数组
        System.out.print("增加元素前的数组: ");
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                System.out.print(arr[i] + ",");
            } else {// i == arr.length-1
                System.out.print(arr[i]);
            }
        }

        // 3.增加元素
        int index = 2;
        for (int i = arr.length - 1; i >= (index + 1); i--) {
            arr[i] = arr[i - 1];
        }
        arr[index] = 99;

        // 4.输出增加元素后的数组
        System.out.print("\n增加元素后的数组: ");
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                System.out.print(arr[i] + ",");
            } else {// i == arr.length-1
                System.out.print(arr[i]);
            }
        }
    }

    public static void addElement4() {
        // 1.给定一个数组
        int[] arr = {10, 20, 30, 22, 88, 77};
        // 2.输出增加元素前的数组
        System.out.print("增加元素前的数组: ");
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                System.out.print(arr[i] + ",");
            } else {// i == arr.length-1
                System.out.print(arr[i]);
            }
        }

        // 3.增加元素
        insertEle(arr, 2, 999);

        // 4.输出增加元素后的数组
        System.out.print("\n增加元素后的数组: ");
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                System.out.print(arr[i] + ",");
            } else {// i == arr.length-1
                System.out.print(arr[i]);
            }
        }
    }

    public static void addElement5() {
        // 1.给定一个数组
        int[] arr = {10, 20, 30, 22, 88, 77};
        // 2.输出增加元素前的数组
        // System.out.print("增加元素前的数组: ");
        // for(int i=0;i<arr.length;i++){
        //     if(i!=arr.length-1){
        //         System.out.print(arr[i]+",");
        //     }else {// i == arr.length-1
        //         System.out.print(arr[i]);
        //     }
        // }

        // 3.增加元素
        System.out.print("请输入你要添加元素的指定索引: ");
        Scanner sc = new Scanner(System.in);
        int index = sc.nextInt();
        System.out.print("\n请输入你要添加的元素: ");
        int ele = sc.nextInt();
        insertEle(arr, index, ele);

        // 4.输出增加元素后的数组
        System.out.print("增加元素后的数组: ");
        for (int i = 0; i < arr.length; i++) {
            if (i != arr.length - 1) {
                System.out.print(arr[i] + ",");
            } else {// i == arr.length-1
                System.out.print(arr[i]);
            }
        }
    }

    /**
     * 在数组指定位置上添加一个指定的元素。不确定因素(哪个数组？哪个位置？哪个元素？-->当做形参)
     */
    public static void insertEle(int[] arr, int index, int ele) {
        for (int i = arr.length - 1; i >= (index + 1); i--) {
            arr[i] = arr[i - 1];
        }
        arr[index] = ele;
    }

    /**
     * 返回多个值
     *
     * @return
     */
    public static int[] getDetails() {
        int v1 = 30;
        int v2 = 40;
        int v3 = 50;
        return new int[]{v1, v2, v3};
    }
}
